///************************************************************************
/// <copyrigth>2018-2019 Corporation.All Rights Reserved</copyrigth>
/// <author>tangyingzhong</author>
/// <contact>tangyz114987@outlook.com</contact>
/// <version>v1.0.0</version>
/// <describe>
/// Test somthing
///</describe>
/// <date>2020/7/26</date>
///***********************************************************************
#ifndef TEST_H
#define TEST_H

#include "Model/ITest.h"

class Test :public PluginBase<ITest>
{
public:
	// Construct the Test
	Test();

	// Detructe the Test
	virtual ~Test();

private:
	// Forbid the copy Test
	Test(const Test& other){	};
	
	// Forbid the assigment of Test
	Test& operator=(const Test& other) { return *this; };
	
public:
	// Start the plugin
	virtual bool Start();

	// Stop the plugin
	virtual bool Stop();

	// Say hello
	virtual void SayHello();

	// Do something
	virtual bool DoSomething(std::vector<std::string>& Table);

private:
	// Initialize the Test
	void Initialize();
	
	// Destory the Test
	void Destory();

private:
	// Get file path
	inline String GetPluginFilePath() const
	{
		return m_strFilePath;
	}

	// Set file path
	inline void SetPluginFilePath(String strFilePath)
	{
		m_strFilePath = strFilePath;
	}

	// Get the disposed status
	inline bool GetDisposed() const
	{
		return m_bDisposed;
	}
	
	// Set the disposed status
	inline void SetDisposed(bool bDisposed)
	{
		m_bDisposed = bDisposed;
	}

private:
	// Plugin info file path
	String m_strFilePath;

	// Disposed status
	bool m_bDisposed;	
};
	
#endif // Test_H
